看到這個標題想必大家應該都不陌生,對,就是那個曾經風靡一時的電視節目在進行的獎金挑戰單元"1A2B",避免有些人不清楚這個遊戲的玩法,那就在這裡簡單說明一下好了:
一開始先產生4位數的「終極密碼」(0~9且不重複),玩家要在四次之內猜到正確的密碼排序
每次玩家在輸入自己的答案之後,會得到有關自己答案跟終極密碼的相關情報,位置/數字皆正確會以"A"表示,數字正確但位置錯誤會以"B"表示
示範(終極密碼:4237) 第一次:4971(1A1B,4),第二次:4132(2A1B,4,3),第三次:4138(2A,4,3),第四次:4237(4A,4,2,3,7)
簡單說明一下可能會用到的功能:Random(產生終極密碼),for(針對玩家的答案逐一與終極密碼進行比較),while(簡單紀錄遊戲回合的功能),input(紀錄玩家輸入的答案),def(建立方法,分門別類用)
下面就是程式碼的部分:
from random import randint
ranlist = []
def generate(lst):
while len(lst) < 4:
lst.append(randint(1,9))
if len(lst) > 1:
x = 0
while x < len(lst)-1:
if lst[x] == lst[len(lst)-1]:
del lst[len(lst)-1]
else:
x += 1
final_ans = ""
for i in range(0,len(lst)):
final_ans = final_ans + str(lst[i])
return final_ans
def gamer():
print("歡迎來到1A2B,密碼已經產生,請在四次之內猜中正確答案")
finans = generate(ranlist)
starter = True
counter = 1
while starter:
if counter == 4:
print("Game Over!!")
starter = False
while counter < 5:
result = 0
answer = input("請輸入你的答案:")
for i in range(0,len(finans)):
for j in range(0,len(finans)):
if answer[i] == finans[j]:
if i == j:
result += 10
else:
result += 1
print(str(int(result/10)) + 'A' + str(result%10) + 'B')
counter += 1
if result == 40:
print("恭喜你,答案就是" + str(finans))
starter = False
gamer()
然後是實機測試的紀錄:
歡迎來到1A2B,密碼已經產生,請在四次之內猜中正確答案
請輸入你的答案:9231
1A0B
請輸入你的答案:9756
1A1B
請輸入你的答案:7684
2A0B
請輸入你的答案:9584
4A0B
恭喜你,答案就是9584
Process finished with exit code 0